using System;
using System.Collections.Generic;
using System.Text;

using QLKS.DataLayer.Base;

namespace QLKS.DataLayer.ManagerObjects
{
    public interface IManagerFactory
    {
		// Get Methods
		ICapabilityManager GetCapabilityManager();
		ICapabilityManager GetCapabilityManager(INHibernateSession session);
		ICTDoanhThuManager GetCTDoanhThuManager();
		ICTDoanhThuManager GetCTDoanhThuManager(INHibernateSession session);
		ICTHoaDonManager GetCTHoaDonManager();
		ICTHoaDonManager GetCTHoaDonManager(INHibernateSession session);
		ICTMatDoSuDungManager GetCTMatDoSuDungManager();
		ICTMatDoSuDungManager GetCTMatDoSuDungManager(INHibernateSession session);
		ICTPhieuThuePhongManager GetCTPhieuThuePhongManager();
		ICTPhieuThuePhongManager GetCTPhieuThuePhongManager(INHibernateSession session);
		IHoaDonManager GetHoaDonManager();
		IHoaDonManager GetHoaDonManager(INHibernateSession session);
		IKhachHangManager GetKhachHangManager();
		IKhachHangManager GetKhachHangManager(INHibernateSession session);
		ILoaiKhachManager GetLoaiKhachManager();
		ILoaiKhachManager GetLoaiKhachManager(INHibernateSession session);
		ILoaiPhongManager GetLoaiPhongManager();
		ILoaiPhongManager GetLoaiPhongManager(INHibernateSession session);
		INhanVienManager GetNhanVienManager();
		INhanVienManager GetNhanVienManager(INHibernateSession session);
		IPhieuThuePhongManager GetPhieuThuePhongManager();
		IPhieuThuePhongManager GetPhieuThuePhongManager(INHibernateSession session);
		IPhongManager GetPhongManager();
		IPhongManager GetPhongManager(INHibernateSession session);
		IThamSoManager GetThamSoManager();
		IThamSoManager GetThamSoManager(INHibernateSession session);
		ITinhTrangManager GetTinhTrangManager();
		ITinhTrangManager GetTinhTrangManager(INHibernateSession session);
    }

    public class ManagerFactory : IManagerFactory
    {
        #region Constructors

        public ManagerFactory()
        {
        }

        #endregion

        #region Get Methods

		public ICapabilityManager GetCapabilityManager()
        {
            return new CapabilityManager();
        }
		public ICapabilityManager GetCapabilityManager(INHibernateSession session)
        {
            return new CapabilityManager(session);
        }
		public ICTDoanhThuManager GetCTDoanhThuManager()
        {
            return new CTDoanhThuManager();
        }
		public ICTDoanhThuManager GetCTDoanhThuManager(INHibernateSession session)
        {
            return new CTDoanhThuManager(session);
        }
		public ICTHoaDonManager GetCTHoaDonManager()
        {
            return new CTHoaDonManager();
        }
		public ICTHoaDonManager GetCTHoaDonManager(INHibernateSession session)
        {
            return new CTHoaDonManager(session);
        }
		public ICTMatDoSuDungManager GetCTMatDoSuDungManager()
        {
            return new CTMatDoSuDungManager();
        }
		public ICTMatDoSuDungManager GetCTMatDoSuDungManager(INHibernateSession session)
        {
            return new CTMatDoSuDungManager(session);
        }
		public ICTPhieuThuePhongManager GetCTPhieuThuePhongManager()
        {
            return new CTPhieuThuePhongManager();
        }
		public ICTPhieuThuePhongManager GetCTPhieuThuePhongManager(INHibernateSession session)
        {
            return new CTPhieuThuePhongManager(session);
        }
		public IHoaDonManager GetHoaDonManager()
        {
            return new HoaDonManager();
        }
		public IHoaDonManager GetHoaDonManager(INHibernateSession session)
        {
            return new HoaDonManager(session);
        }
		public IKhachHangManager GetKhachHangManager()
        {
            return new KhachHangManager();
        }
		public IKhachHangManager GetKhachHangManager(INHibernateSession session)
        {
            return new KhachHangManager(session);
        }
		public ILoaiKhachManager GetLoaiKhachManager()
        {
            return new LoaiKhachManager();
        }
		public ILoaiKhachManager GetLoaiKhachManager(INHibernateSession session)
        {
            return new LoaiKhachManager(session);
        }
		public ILoaiPhongManager GetLoaiPhongManager()
        {
            return new LoaiPhongManager();
        }
		public ILoaiPhongManager GetLoaiPhongManager(INHibernateSession session)
        {
            return new LoaiPhongManager(session);
        }
		public INhanVienManager GetNhanVienManager()
        {
            return new NhanVienManager();
        }
		public INhanVienManager GetNhanVienManager(INHibernateSession session)
        {
            return new NhanVienManager(session);
        }
		public IPhieuThuePhongManager GetPhieuThuePhongManager()
        {
            return new PhieuThuePhongManager();
        }
		public IPhieuThuePhongManager GetPhieuThuePhongManager(INHibernateSession session)
        {
            return new PhieuThuePhongManager(session);
        }
		public IPhongManager GetPhongManager()
        {
            return new PhongManager();
        }
		public IPhongManager GetPhongManager(INHibernateSession session)
        {
            return new PhongManager(session);
        }
		public IThamSoManager GetThamSoManager()
        {
            return new ThamSoManager();
        }
		public IThamSoManager GetThamSoManager(INHibernateSession session)
        {
            return new ThamSoManager(session);
        }
		public ITinhTrangManager GetTinhTrangManager()
        {
            return new TinhTrangManager();
        }
		public ITinhTrangManager GetTinhTrangManager(INHibernateSession session)
        {
            return new TinhTrangManager(session);
        }
        
        #endregion
    }
}
